/*
 * SlipMinusStickChart.java
 * Android-Charts
 *
 * Created by limc on 2014.
 *
 * Copyright 2011 limc.cn All rights reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package cn.limc.ohoscharts.view;


import cn.limc.ohoscharts.entity.IMeasurable;
import cn.limc.ohoscharts.mole.StickMole;
import ohos.agp.components.AttrSet;
import ohos.agp.render.Canvas;
import ohos.app.Context;

/**
 * <p>
 * en
 * </p>
 * <p>
 * jp
 * </p>
 * <p>
 * cn
 * </p>
 *
 * @author limc
 * @version v1.0 2014/01/21 14:05:50
 */
public class SlipMinusStickChart extends SlipStickChart {

  /*
   * (non-Javadoc)
   *
   * @param context
   *
   * @see cn.limc.ohoscharts.view.GridChart#GridChart(Context)
   */
  public SlipMinusStickChart(Context context) {
    super(context);
  }

  /*
   * (non-Javadoc)
   *
   * @param context
   *
   * @param attrs
   *
   * @param defStyle
   *
   * @see cn.limc.ohoscharts.view.GridChart#GridChart(Context,
   * AttributeSet, int)
   */
  public SlipMinusStickChart(Context context, AttrSet attrs, int defStyle) {
    super(context, attrs, defStyle);
  }

  /*
   * (non-Javadoc)
   *
   * @param context
   *
   * @param attrs
   *
   * @see cn.limc.ohoscharts.view.GridChart#GridChart(Context,
   * AttributeSet)
   */
  public SlipMinusStickChart(Context context, AttrSet attrs) {
    super(context, attrs);
  }

  @Override
  protected void calcDataValueRange() {

    double maxValue = -Double.MAX_VALUE;
    double minValue = Double.MAX_VALUE;

    IMeasurable first = this.stickData.get(0);
    // 第一个stick为停盘的情况
    if (first.getHigh() == 0 && first.getLow() == 0) {

    } else {
      maxValue = first.getHigh();
      minValue = first.getLow();
    }

    // 判断显示为方柱或显示为线条
    for (int i = getDisplayFrom(); i < getDisplayFrom() + getDisplayNumber(); i++) {
      IMeasurable stick = this.stickData.get(i);
      if (stick.getLow() < minValue) {
        minValue = stick.getLow();
      }

      if (stick.getHigh() > maxValue) {
        maxValue = stick.getHigh();
      }

    }

    this.maxValue = maxValue;
    this.minValue = minValue;
  }

  @Override
  protected void calcValueRangePaddingZero() {

  }

  @Override
  protected void calcValueRangeFormatForAxis() {

  }

  /*
   * (non-Javadoc)
   *
   * @param canvas
   *
   *
   *
   * @see cn.limc.ohoscharts.view.StickChart#drawSticks(Canvas)
   */
  @Override
  protected void drawSticks(Canvas canvas) {
    float stickWidth = dataQuadrant.getPaddingWidth() / getDisplayNumber();
    float stickX = dataQuadrant.getPaddingStartX();

    if (null != stickData) {
      // display as stick or line
      for (int i = super.getDisplayFrom(); i < super.getDisplayFrom()
          + super.getDisplayNumber(); i++) {
        IMeasurable stick = stickData.get(i);

        StickMole mole = (StickMole) provider.getMole();
        mole.setUp(this, stick, stickX, stickWidth);
        mole.draw(canvas);

        // next x
        stickX = stickX + stickWidth;
      }
    }
  }
}
